﻿#ifndef __COLLIDER_H
#define __COLLIDER_H
class Enemy;
class Sprite;
class WeaponBank;
class EnemyPlane;
class SupplyBank;
//碰撞操作
class Collider 
{
public:
	Collider()=default;
	//设置敌机组
	void setEnemy(Enemy* const enemy );
	////设置玩家子弹库
	//void setPlayerBulletBank(WeaponBank* const  bulletBank);
	//设置玩家
	void setPlayer( Sprite* const player);
	//设置补给库
	void setSupplyBank(SupplyBank* const supplyBank);
	//初始化
	//virtual void init();
	
	//更新全部碰撞数据
	void update();
	//玩家子弹与敌机碰撞
	void updateEnemyAndPlayerBulletBank();
	//玩家与敌机碰撞
	void updatePlayerAndBulletBank();
	//玩家与敌机子弹碰撞
	void updatePlayerAndBulletBankBullet();
	//玩家与补给包碰撞
	void updatePlayerAndSupplyBank();

	//开启追踪玩家,玩家出现在敌机半径r像素追踪玩家,以双方中心点距离判断
	void startTrackingPlayers(int r);
	//关闭追踪玩家
	void closeTrackingPlayers();
protected:
	//敌机自动追踪玩家
	void AutoTrackingPlayers(EnemyPlane& enemyPlane, Sprite& Player);
private:
	Enemy* m_enemy=nullptr;//敌机组
	Sprite* m_Player = nullptr;//玩家
	SupplyBank* m_SupplyBank = nullptr;//补给库
	bool m_TrackingPlayers = false;//追踪开关
	int m_TrackingPlayersR = 100;//追踪半径
};
#endif